== 介绍 ==

== 通讯协议 == 
=== CPU 与 MCU通讯协议 ===
====物理层协议====
*通过串口通讯，9600波特率，校验位无，数据位8位，停止位1位
=====帧格式表=====
{| class="wikitable sortable"
|-
! 起始位   !! 数据位 !! 校验位置 !! 结束位置
|-
|0xA5,一个字节长度||见数据位表，变长||数据位（从数据位开始到数据位结束）的CRC校验，2个字节长度，低位在前，高位在后||0x5A，一个字节长度
|}

=====数据位表=====
{| class="wikitable sortable"
|-
! 数据来源地址  !! 目的地址 !! 帧序号 !! 数据长度 (第5-6位) !! 数据命令以及数据内容
|-
|0x01表示CPU板;<br>'''0x81表示 MCU控制板'''，一个字节||0x01表示CPU板；<br>0x81表示 MCU控制板''',一个字节长度||主动发送数据设备没发送一次数据加一个，两个字节，低位在前，高位在后（大于0xffff，清零），接收需要返回数据同数据返回||数据命令以及数据内容部分数据长度，两个字节，低位在前，高位在后||见数据命令以及数据内容表，变长
|}

=====数据命令以及数据内容表=====      
{| class="wikitable sortable"
|-
! 命令序号（定长，两个字节低位在前，高位在后），第7-8位   !! 命令内容（变长，0到n个字节），第9位开始 !! 是否需要回复（定长，1个字节）
|-
|1，CPU发送心跳||无||1表示需要返回
|-
|2，STM32应答心跳||0（超过3分钟没有收到任何数据，STM32重启CPU）||0表示无需返回
|-
|3，CPU读取STM32硬件版本||数据长度0|1表示需要返回
|-
|4，STM32应答上传硬件版本||例如，"IPPHONE_NT1923A1",16个字节长度||0表示无需返回
|-
|5，CPU读取STM32软件版本||无||1表示需要返回
|-
|6，STM32应答上传软件版本||例如，"IPPHONE_19090301",16个字节长度||0表示无需返回
|-
|9，STM32上报状态||电池电压（2个字节，地位在前，高位在后，单位mV）；type-c接口状态（1个字节，0没有接任何设备，1接USB DEVICE设备，2接type-c接口充电）；电池是否在充电（1一个字节，1表示在充电，0表示没有充电）||0表示无需返回，1表示需要返回，
|-
|10，CPU回复||0表示正常，1表示错误。||0表示无需返回
|-
|11，CPU 下达准备关机命令||无||1表示需要返回
|-
|12，STM32回复||0表示正常，1表示错误。STM32收到此命令后30S关闭CPU电源||0表示无需返回
|-
|13，CPU 下达打开，关闭看门狗命令||1，打开看门狗，0关闭看门狗，0个字节||1表示需要返回
|-
|14，STM32回复||0表示正常，1表示错误||0表示无需返回
|}